During the decoding of video data, the video data includes sets of data structures, such as group of pictures, pictures, slices, macroblocks, and blocks. A video decoder decodes the video data, one picture at a time, on a slice by slice basis.
Start codes indicate the starting points for groups of pictures, pictures, and slices. When a decoding system receives video data for decoding, the decoding system places the video data into a compressed data buffer to await decoding by a video decoder. The compressed data buffer usually comprises multiple byte data words. For example, the compressed data buffer can comprise 16-byte gigantic words (gwords). The decoder system also creates a start code table the indicates the compressed data buffer data word address for each start code.
When the video decoder selects a data structure for decoding, the video decoder looks up the start code of the data structure in the start code table to determine the gword address storing the start code. The video decoder then fetches the gwords starting from the address.
It is noted, however, that the start codes can occur anywhere in the video data and are not necessarily aligned with any particular interval. Accordingly, when the start codes are stored in the compressed data buffer, the start codes do not align with gword boundaries. Therefore, when the video decoder fetches a gword containing a start code, the gword may contain the tail end of another data structure prior to the start code.
In one scheme, it is possible to assure alignment of start codes with gword boundaries by stuffing zeroes. However, in the case where a data word is 16 bytes, each alignment could add up to 15 bytes, depending on the position of the start code. A transport stream delivers the video data. The transport stream comprises fixed length packets of 188 bytes. As a result, the packets can be fetched with a direct memory access module with 256 byte buffer. However, if a transport packet includes a large number of start codes, the transport packet may require in excess of 256 bytes for storage. If a transport packet requires in excess of 256 bytes for storage, more than one access will be needed to fetch the packet.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.